public class Solution {
    //1.     1
    //2.     11
    //3.     21
    //4.     1211
    //5.     111221
    //第一项是数字 1
    //描述前一项，这个数是 1 即 “ 一 个 1 ”，记作 "11"
    //描述前一项，这个数是 11 即 “ 二 个 1 ” ，记作 "21"
    //描述前一项，这个数是 21 即 “ 一 个 2 + 一 个 1 ” ，记作 "1211"
    //描述前一项，这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ，记作 "111221"

    public String countAndSay(int n){
        return f(n);
    }
    private StringBuilder builder=new StringBuilder();
    private String f(int n){
        if (n==1)return "1";

        String s=f(n-1);
        for(int i=1,cnt=1;i<=s.length();i++){
            if(i==s.length()||s.charAt(i)!=s.charAt(i-1)){
                char c=s.charAt(i-1);
                builder.append(cnt).append(c);
                cnt=0;
            }
            cnt++;
        }
        String ret=builder.toString();
        builder.setLength(0);
        return ret;
    }
}
